package com.it.mygenerics;

import java.util.ArrayList;

public class GenericeDemo4 {
    public static void main(String[] args) {
        /*
            需求：
            定义一个方法，形参是一个集合，但是集合中，但是集合中的数据类型不确定
         */

        //创建集合的对象
        ArrayList<Ye> list1 = new ArrayList<>();
        ArrayList<Fu> list2 = new ArrayList<>();
        ArrayList<Zi> list3 = new ArrayList<>();

        //调用method方法
        method(list1);
        method(list2);//不会报错
        method(list3);//不会报错
    }

    /*
        此时，泛型里面写的是什么类型，那么只能传递什么类型的数据
        弊端：
            利用泛型方法有一个弊端，此时他可以接受任意的数据类型
            Ye Fu Zi Student
            希望：本方法虽然不能确定类型，但是以后我希望只能传递Ye Fu Zi

            此时我们就可以使用泛型的通配符
            ?也表示不确定类型
            它可以进行类型的限定
            ? extends E:表示可以传递E或者E所有的子类类型
            ? super E:表示可以传递E或者E所有的父类类型
     */
    public static<E> void method(ArrayList<? extends Ye> list){

    }
}
